#include "HardwareProfile.h"
#include <stdio.h>
void Display_Init(void)
{
#ifdef Proteus
	Max7221_Init();	
	Display_WriteData(0x09,0x00);   
	Display_WriteData(0x0a,0x07); 
	Display_WriteData(0x0b,0x05); 
	Display_WriteData(0x0c,0x01);	
#else
	HT162X_Init();
	HT162X_Setting(0b00101001);
	HT162X_Setting(HT162X_SYS_EN);
	HT162X_Setting(HT162X_LCD_ON);
#endif	
	ledFlags.AllFlag=0x00;
	sprintf(DisplayLine,"%03d",WFRomOneByte);
	Display_WriteData(Display_LEDAddr[0],Display_LEDNumCode[DisplayLine[0]-'0']); 
	Display_WriteData(Display_LEDAddr[1],Display_LEDNumCode[DisplayLine[1]-'0']);
	Display_WriteData(Display_LEDAddr[2],Display_LEDNumCode[DisplayLine[2]-'0']);
	Display_WriteData(Display_LEDAddr[3],Display_LED_Off);
	Display_WriteData(Display_LEDAddr[4],Display_LED_Off);
	Display_WriteData(Display_LEDAddr[5],Display_LED_Off);
}
void Display_WorkShow(void)
{
	sprintf(DisplayLine,"%03d",WorkMinute);
	Display_WriteData(Display_LEDAddr[0],Display_LEDNumCode[DisplayLine[0]-'0']); 
	Display_WriteData(Display_LEDAddr[1],Display_LEDNumCode[DisplayLine[1]-'0']);
	Display_WriteData(Display_LEDAddr[2],Display_LEDNumCode[DisplayLine[2]-'0']);
	Display_WriteData(Display_LEDAddr[3],Display_LED_Off);
	sprintf(DisplayLine,"%02d",WorkSecond);
	Display_WriteData(Display_LEDAddr[4],Display_LEDNumCode[DisplayLine[0]-'0']); 
	Display_WriteData(Display_LEDAddr[5],Display_LEDNumCode[DisplayLine[1]-'0']);
}
void Display_SettingShow(void)
{
	if(gFlags.bShow)
	{
		sprintf(DisplayLine,"%03d",Setting_WorkTime);
		Display_WriteData(Display_LEDAddr[0],Display_LEDNumCode[DisplayLine[0]-'0']); 
		Display_WriteData(Display_LEDAddr[1],Display_LEDNumCode[DisplayLine[1]-'0']);
		Display_WriteData(Display_LEDAddr[2],Display_LEDNumCode[DisplayLine[2]-'0']);
	}
	else
	{
		Display_WriteData(Display_LEDAddr[0],Display_LED_Off);
		Display_WriteData(Display_LEDAddr[1],Display_LED_Off);
		Display_WriteData(Display_LEDAddr[2],Display_LED_Off);
	}
	Display_WriteData(Display_LEDAddr[3],Display_LED_Off);
	Display_WriteData(Display_LEDAddr[4],Display_LED_Off);
	Display_WriteData(Display_LEDAddr[5],Display_LED_Off);
}
void Display_FinishShow(void)
{
	if(gFlags.bShow)
	{
		Display_WriteData(Display_LEDAddr[0],Display_LEDNumCode[0]); 
		Display_WriteData(Display_LEDAddr[1],Display_LEDNumCode[0]);
		Display_WriteData(Display_LEDAddr[2],Display_LEDNumCode[0]);
		Display_WriteData(Display_LEDAddr[4],Display_LEDNumCode[0]);
		Display_WriteData(Display_LEDAddr[5],Display_LEDNumCode[0]);
	}
	else
	{
		Display_WriteData(Display_LEDAddr[0],Display_LED_Off);
		Display_WriteData(Display_LEDAddr[1],Display_LED_Off);
		Display_WriteData(Display_LEDAddr[2],Display_LED_Off);
		Display_WriteData(Display_LEDAddr[4],Display_LED_Off);
		Display_WriteData(Display_LEDAddr[5],Display_LED_Off);
	}
	Display_WriteData(Display_LEDAddr[3],Display_LED_Off);	
}
void Display_ShowPage(void)
{
// 	unsigned char DisplayLine[17],i;
// 		sprintf(DisplayLine,"%03d",BattV);
// 		for(i=0;i<3;i++)
// 		{
// 			Display_WriteData(Display_LEDAddr[i],Display_LEDNumCode[DisplayLine[i]-'0']);
// 		}
// 		return;
// 		//Display_WriteData(Display_LEDAddr[0],Display_LEDNumCode[AlarmListIndex+1]); 
// 		Display_WriteData(Display_LEDAddr[0],Display_LED_Off);//Display_LEDNumCode[Display_LEDNumCode_Off]); 
// 		Display_WriteData(Display_LEDAddr[1],Display_LEDNumCode[AlarmList[AlarmListIndex].RoomIndex /10]);
// 		Display_WriteData(Display_LEDAddr[2],Display_LEDNumCode[AlarmList[AlarmListIndex].RoomIndex %10]);
// 		Display_WriteData(Display_LEDAddr[3],Display_LEDNumCode[16]);
// 		Display_WriteData(Display_LEDAddr[4],Display_LEDNumCode[AlarmList[AlarmListIndex].DripFrameIndex/10]);
// 		Display_WriteData(Display_LEDAddr[5],Display_LEDNumCode[AlarmList[AlarmListIndex].DripFrameIndex%10]);
}
void HT162X_ShowNum(unsigned char addr,unsigned char num)
{
	unsigned char i,a;
	switch(addr)
	{
	case 0:
		if(ledFlags.bX3)
			num=num|0x01;
		break;
	case 1:
		if(ledFlags.bX2)
			num=num|0x01;
		break;
	case 2:
		if(ledFlags.bX1)
			num=num|0x01;
		break;
	case 3:
		if(ledFlags.bDP4)
			num=num|0x01;
		break;
	case 4:
		if(ledFlags.bDP5)
			num=num|0x01;
		break;
	case 5:
		if(ledFlags.bDP6)
			num=num|0x01;
		break;
	}
	a=addr<<1;
	HT162X_WriteData(a,HIGH_NIBBLE(num));
	a++;
	HT162X_WriteData(a,LOW_NIBBLE(num));
}


